/*  =========================================================================
    zmosq - generated layer of public API

    Copyright (c) the Contributors as noted in the AUTHORS file.       
    This file is part of the Malamute Project.                         
                                                                       
    This Source Code Form is subject to the terms of the Mozilla Public
    License, v. 2.0. If a copy of the MPL was not distributed with this
    file, You can obtain one at http://mozilla.org/MPL/2.0/.           

################################################################################
#  THIS FILE IS 100% GENERATED BY ZPROJECT; DO NOT EDIT EXCEPT EXPERIMENTALLY  #
#  Read the zproject/README.md for information about making permanent changes. #
################################################################################
    =========================================================================
*/

#ifndef ZMSQ_LIBRARY_H_INCLUDED
#define ZMSQ_LIBRARY_H_INCLUDED

//  Set up environment for the application

//  External dependencies
#include <czmq.h>
#include <mosquitto.h>

//  ZMSQ version macros for compile-time API detection
#define ZMSQ_VERSION_MAJOR 0
#define ZMSQ_VERSION_MINOR 1
#define ZMSQ_VERSION_PATCH 0

#define ZMSQ_MAKE_VERSION(major, minor, patch) \
    ((major) * 10000 + (minor) * 100 + (patch))
#define ZMSQ_VERSION \
    ZMSQ_MAKE_VERSION(ZMSQ_VERSION_MAJOR, ZMSQ_VERSION_MINOR, ZMSQ_VERSION_PATCH)

#if defined (__WINDOWS__)
#   if defined ZMSQ_STATIC
#       define ZMSQ_EXPORT
#   elif defined ZMSQ_INTERNAL_BUILD
#       if defined DLL_EXPORT
#           define ZMSQ_EXPORT __declspec(dllexport)
#       else
#           define ZMSQ_EXPORT
#       endif
#   elif defined ZMSQ_EXPORTS
#       define ZMSQ_EXPORT __declspec(dllexport)
#   else
#       define ZMSQ_EXPORT __declspec(dllimport)
#   endif
#   define ZMSQ_PRIVATE
#else
#   define ZMSQ_EXPORT
#   if (defined __GNUC__ && __GNUC__ >= 4) || defined __INTEL_COMPILER
#       define ZMSQ_PRIVATE __attribute__ ((visibility ("hidden")))
#   else
#       define ZMSQ_PRIVATE
#   endif
#endif

//  Project has no stable classes, so we build the draft API
#undef  ZMSQ_BUILD_DRAFT_API
#define ZMSQ_BUILD_DRAFT_API

//  Opaque class structures to allow forward references
//  These classes are stable or legacy and built in all releases
//  Draft classes are by default not built in stable releases
#ifdef ZMSQ_BUILD_DRAFT_API
typedef struct _zmosq_client_t zmosq_client_t;
#define ZMOSQ_CLIENT_T_DEFINED
typedef struct _zmosq_server_t zmosq_server_t;
#define ZMOSQ_SERVER_T_DEFINED
#endif // ZMSQ_BUILD_DRAFT_API


//  Public classes, each with its own header file
#ifdef ZMSQ_BUILD_DRAFT_API
#include "zmosq_client.h"
#include "zmosq_server.h"
#endif // ZMSQ_BUILD_DRAFT_API

#ifdef ZMSQ_BUILD_DRAFT_API
//  Self test for private classes
ZMSQ_EXPORT void
    zmsq_private_selftest (bool verbose);
#endif // ZMSQ_BUILD_DRAFT_API

#endif
/*
################################################################################
#  THIS FILE IS 100% GENERATED BY ZPROJECT; DO NOT EDIT EXCEPT EXPERIMENTALLY  #
#  Read the zproject/README.md for information about making permanent changes. #
################################################################################
*/
